home *** CD-ROM | disk | FTP | other *** search
- /* $Id: I3DSHOrn.H 1.2 1995/09/11 01:12:51 YannPC Exp $ */
- /*****************************************************************************\
- * *
- * I3DShORn.h *
- * I3DShObjectRender definition *
- * I3DShSceneRender definition *
- * *
- * Copyright (c) 1995, Ray Dream, Inc. All rights reserved. *
- * *
- \*****************************************************************************/
-
- #ifndef __I3DSHORN__
- #define __I3DSHORN__
-
- #ifndef __I3DSHOBJ__
- #include "I3DShObj.h"
- #endif
-
- #ifndef __I3DSHSCN__
- #include "I3DShScn.h"
- #endif
-
-
- //****** Globally Unique Ids **************************************************
-
- DEFINE_GUID(IID_I3DShObjectRender, 0xCFEA9020L, 0x3A02, 0x101C, 0x88, 0x5F, 0x04, 0x02, 0x1C, 0x00, 0x70, 0x02);
- DEFINE_GUID(IID_I3DShSceneRender, 0xD19755C0L, 0x3A02, 0x101C, 0x88, 0x5F, 0x04, 0x02, 0x1C, 0x00, 0x70, 0x02);
-
- DEFINE_GUID(CLSID_StandardObjectRender, 0xD35AFEC0L, 0x3A02, 0x101C, 0x88, 0x5F, 0x04, 0x02, 0x1C, 0x00, 0x70, 0x02);
-
-
- struct I3DShObjectRender;
- class I3DShLineArt;
- struct ZBInfo;
- struct BOX3D_2;
-
- /*****************************************************************************\
- * I3DShEnumSubPrimitive *
- * *
- * Sub primitive enumrator, used in I3DShObjectRender::GetSubPrimitivesEnum() *
- * *
- \*****************************************************************************/
-
- #undef INTERFACE
- #define INTERFACE I3DShEnumSubPrimitive
-
- DECLARE_INTERFACE_(I3DShEnumSubPrimitive, IUnknown) {
- // IUnknown methods
- STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
- STDMETHOD_(ULONG, AddRef) (THIS) PURE;
- STDMETHOD_(ULONG, Release) (THIS) PURE;
-
- // I3DShEnumSubPrimitive methods
- STDMETHOD(Next) (THIS_ ULONG celt, I3DShObjectRender** rgelt, TREETRANSFORM3D* treeTransform, I3DShInstance* instance, ULONG* pceltFetched) PURE;
- STDMETHOD(Skip) (THIS_ ULONG celt) PURE;
- STDMETHOD(Reset) (THIS) PURE;
- STDMETHOD(Clone) (THIS_ I3DShEnumSubPrimitive** ppenm) PURE;
- };
-
- /*****************************************************************************\
- * I3DShObjectRender *
- * *
- * I3DShObjectRender provides services that used only by renderers. *
- * This interface will always be return by I3DShObject::QueryInterface() *
- * on 3D shells that are designed to support renderers. *
- * External primitives that do not have anything special to do can simply *
- * instanciate a standard ObjectRender object by using *
- * CLSID_StandardObjectRender. *
- * *
- \*****************************************************************************/
-
- #undef INTERFACE
- #define INTERFACE I3DShObjectRender
-
- DECLARE_INTERFACE_(I3DShObjectRender, IUnknown) {
- // IUnknown methods
- STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
- STDMETHOD_(ULONG, AddRef) (THIS) PURE;
- STDMETHOD_(ULONG, Release) (THIS) PURE;
-
- // I3DShObjectRender methods
- //-- Geometry calls
- STDMETHOD_(BOOLEAN, IsPatchBased) (THIS) PURE;
- STDMETHOD(EnumPatches) (THIS_ EnumPatchesCallback callback, void* privData) PURE;
- STDMETHOD(EnumFacets) (THIS_ EnumFacetsCallback callback, void* privData, NUM3D fidelity) PURE;
- STDMETHOD(PrimitiveModified) (THIS_ short how) PURE;
- STDMETHOD_(I3DShEnumSubPrimitive*, GetSubPrimitivesEnum) (THIS) PURE; // Get list of subprimitives
- STDMETHOD(GetFlatness) (THIS_ NUM3D* flatness) PURE;
- //-- Rendering calls
- STDMETHOD(Draw) (THIS_ ZBInfo* zbInfo, ULONG uvSpaceID) PURE; // Z-Buffer / Scanline
- STDMETHOD(WireframeDraw) (THIS_ I3DShLineArt* aLineArt, TREETRANSFORM3D* treeTransform, I3DShCamera* camera, BOX2D* drawArea, short mode) PURE; // Wireframe
- STDMETHOD_(BOOLEAN, RayHit) (THIS_ Ray3D* ray, RayHitParams* params, RayHit3D* hit) PURE;
- STDMETHOD(GetRayHitDetails) (THIS_ RayHit3D* hit, ULONG* uvSpaceID) PURE;
- STDMETHOD(RayAllHits) (THIS_ Ray3D* ray, RayHitParams* params, RayHit3D* hit, RayHitCallback callback, void* privData) PURE; // Optional - Return E_NOTIMPL if not implemented
- //-- Utils.
- STDMETHOD(GetBoxes) (THIS_ ZBInfo* zbInfo, NUM3D* resultMinZ, NUM3D* resultMaxZ, BOX3D_2* resultBox2D, BOX3D* resultBox3D) PURE;
- STDMETHOD(GetBBox) (THIS_ BOX3D* result) PURE;
- STDMETHOD(Dehydrate) (THIS_ short level) PURE;
- };
-
-
- /*****************************************************************************\
- * I3DShSceneRender *
- * *
- * At this time, I3DShSceneRender is identical to I3DShObjectRender. *
- * *
- \*****************************************************************************/
-
- #undef INTERFACE
- #define INTERFACE I3DShSceneRender
-
- DECLARE_INTERFACE_(I3DShSceneRender, I3DShObjectRender) {
- // IUnknown methods
- STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
- STDMETHOD_(ULONG, AddRef) (THIS) PURE;
- STDMETHOD_(ULONG, Release) (THIS) PURE;
-
- // I3DShObjectRender methods
- //-- Geometry calls
- STDMETHOD_(BOOLEAN, IsPatchBased) (THIS) PURE;
- STDMETHOD(EnumPatches) (THIS_ EnumPatchesCallback callback, void* privData) PURE;
- STDMETHOD(EnumFacets) (THIS_ EnumFacetsCallback callback, void* privData, NUM3D fidelity) PURE;
- STDMETHOD(PrimitiveModified) (THIS_ short how) PURE;
- STDMETHOD_(I3DShEnumSubPrimitive*, GetSubPrimitivesEnum) (THIS) PURE; // Get list of subprimitives
- STDMETHOD(GetFlatness) (THIS_ NUM3D* flatness) PURE;
- //-- Rendering calls
- STDMETHOD(Draw) (THIS_ ZBInfo* zbInfo, ULONG uvSpaceID) PURE; // Z-Buffer / Scanline
- STDMETHOD(WireframeDraw) (THIS_ I3DShLineArt* aLineArt, TREETRANSFORM3D* treeTransform, I3DShCamera* camera, BOX2D* drawArea, short mode) PURE; // Wireframe
- STDMETHOD_(BOOLEAN, RayHit) (THIS_ Ray3D* ray, RayHitParams* params, RayHit3D* hit) PURE;
- STDMETHOD(GetRayHitDetails) (THIS_ RayHit3D* hit, ULONG* uvSpaceID) PURE;
- STDMETHOD(RayAllHits) (THIS_ Ray3D* ray, RayHitParams* params, RayHit3D* hit, RayHitCallback callback, void* privData) PURE; // Optional - Return E_NOTIMPL if not implemented
- //-- Utils.
- STDMETHOD(GetBoxes) (THIS_ ZBInfo* zbInfo, NUM3D* resultMinZ, NUM3D* resultMaxZ, BOX3D_2* resultBox2D, BOX3D* resultBox3D) PURE;
- STDMETHOD(GetBBox) (THIS_ BOX3D* result) PURE;
- STDMETHOD(Dehydrate) (THIS_ short level) PURE;
- };
-
-
-
- #endif
-
-